home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / pc / DirectX SDK / DXSDK / samples / Multimedia / DirectPlay / Maze / MazeCommon / dplay8client.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-10-31  |  4.2 KB  |  103 lines

  1. //----------------------------------------------------------------------------
  2. // File: dplay8client.h
  3. //
  4. // Desc: see main.cpp
  5. //
  6. // Copyright (c) 1999-2001 Microsoft Corp. All rights reserved.
  7. //-----------------------------------------------------------------------------
  8. #ifndef _DPLAY8_CLIENT_H
  9. #define _DPLAY8_CLIENT_H
  10.  
  11.  
  12. //-----------------------------------------------------------------------------
  13. // Name: 
  14. // Desc: 
  15. //-----------------------------------------------------------------------------
  16. #include "NetAbstract.h"
  17.  
  18. struct MazeConfig;
  19.  
  20. //-----------------------------------------------------------------------------
  21. // Name: 
  22. // Desc: 
  23. //-----------------------------------------------------------------------------
  24. class   CDPlay8Client : public IOutboundClient
  25. {
  26. public:
  27.     CDPlay8Client();
  28.     ~CDPlay8Client();
  29.  
  30.     HRESULT     Init(MazeConfig* pMazeConfig);
  31.     void        Shutdown();
  32.     HRESULT     StartSessionEnum( const TCHAR* ipaddress );
  33.     HRESULT     StopSessionEnum();
  34.     DWORD       GetNumSessions() const { return m_dwNumSessions; };
  35.     const TCHAR* GetSessionName( DWORD num ) const { return m_szSessionNames[num]; };
  36.     DWORD       GetSessionMaxPlayers( DWORD num ) const { return m_Sessions[num].dwMaxPlayers; };
  37.     DWORD       GetSessionCurrentPlayers( DWORD num ) const { return m_Sessions[num].dwCurrentPlayers; };
  38.     GUID        GetSessionGUID( DWORD num ) const { return m_Sessions[num].guidInstance; };
  39.     HRESULT     JoinSession( DWORD num );
  40.     void        SetClient( INetClient* pclient ) { m_pClient = pclient; };
  41.     IOutboundClient* GetOutboundClient() const { return ((IOutboundClient*)this); };
  42.     
  43.     DWORD       GetNumSPThreads();
  44.     void        SetNumSPThreads(DWORD dwNumSPThreads);
  45.  
  46.     DWORD       GetSPBuffer();
  47.     void        SetSPBuffer(DWORD dwSPBufferSize);
  48.  
  49.     // IOutboundClient
  50.     virtual HRESULT     SendPacket( void* pData, DWORD dwSize, BOOL bGuaranteed, DWORD dwTimeout );
  51.     virtual DWORD       GetThroughputBPS();
  52.     virtual DWORD       GetRoundTripLatencyMS();
  53.     virtual BOOL        IsSessionLost() { return m_bSessionLost; };
  54.     virtual DWORD       GetSessionLostReason() { return m_dwSessionLostReason; };
  55.     virtual HRESULT     GetConnectionInfo( TCHAR* strConnectionInfo );
  56.  
  57. protected:
  58.     IDirectPlay8Client* m_pDPlay;
  59.     BOOL                m_bConnected;
  60.     INetClient*         m_pClient;
  61.     BOOL                m_bSessionLost;
  62.     DWORD               m_dwSessionLostReason;
  63.     FLOAT               m_fThroughputBPS;
  64.     DWORD               m_dwThroughputBytes;
  65.     
  66.     CRITICAL_SECTION    m_csThreadCountLock;
  67.     WORD                m_wActiveThreadCount;
  68.     WORD                m_wMaxThreadCount;
  69.     FLOAT               m_fAvgThreadCount;
  70.     FLOAT               m_fAvgThreadTime;
  71.     FLOAT               m_fMaxThreadTime;
  72.  
  73.     // Configuration info.
  74.     MazeConfig*         m_MazeConfig;
  75.  
  76.     // Connection info 
  77.     FLOAT               m_fLastUpdateConnectInfoTime;
  78.     DPN_CONNECTION_INFO m_dpnConnectionInfo;
  79.     DWORD               m_dwHighPriMessages, m_dwHighPriBytes;
  80.     DWORD               m_dwNormalPriMessages, m_dwNormalPriBytes;
  81.     DWORD               m_dwLowPriMessages, m_dwLowPriBytes;
  82.     HRESULT             UpdateConnectionInfo();
  83.  
  84.     BOOL EnumSessionCallback( const DPN_APPLICATION_DESC *pdesc, IDirectPlay8Address* pDP8AddressHost, IDirectPlay8Address* pDP8AddressDevice );
  85.     static HRESULT WINAPI StaticReceiveHandler( void *pvContext, DWORD dwMessageType, void *pvMessage );
  86.     HRESULT WINAPI ReceiveHandler( void *pvContext, DWORD dwMessageType, void *pvMessage );
  87.  
  88.     enum                    {MAX_SESSIONS=256};
  89.     enum                    {MAX_SESSION_NAME=64};
  90.     DWORD                   m_dwNumSessions;
  91.     DPN_APPLICATION_DESC    m_Sessions[MAX_SESSIONS];
  92.     IDirectPlay8Address*    m_pHostAddresses[MAX_SESSIONS];
  93.     IDirectPlay8Address*    m_pDeviceAddresses[MAX_SESSIONS];
  94.     TCHAR                   m_szSessionNames[MAX_SESSIONS][MAX_SESSION_NAME];
  95.     FLOAT                   m_fSessionLastSeenTime[MAX_SESSIONS];
  96.     CRITICAL_SECTION        m_csLock;
  97.     DPNHANDLE               m_dpnhEnum;
  98. };
  99.  
  100.  
  101.  
  102. #endif
  103.